1. Field of the Invention
The present invention relates to a method, system, and article of manufacture for recovery of application faults in a mirrored application environment.
2. Description of the Related Art
Application processes may concurrently access memory addresses in a shared memory. A process may comprise one or more threads allocated processor and computer resources to execute computer instructions. Multiple processes or multiple threads in one process may concurrently execute instructions for one application, or multiple processes may concurrently execute instructions for multiple applications. Multiple processes may execute on multiple processors. The term “process” as used herein refers to a process, thread or any other unit of execution allocated to execute instructions. To access the memory addresses, the processes must obtain a spinlock for each address. If the spinlock is not available or granted to another process, then the process must repeatedly check until the spinlock becomes available. Application processes may experience an execution error based on a non-deterministic pattern of accesses. For instance, a certain non-deterministic access pattern of requests for memory addresses may result in a deadlock or other locking errors due to a race condition. A race condition occurs when separate processes or threads of execution depend on some shared state. A deadlock refers to a specific condition when two or more processes, such as in a multi-processor environment, are each waiting for the process to release a shared resource, such as a lock for a resource, or more than two processes are waiting for resources in a circular chain.
In a mirrored application environment, a secondary system may mirror application operations occurring in a primary system so that in the event of a failure at the primary system, the application may continue executing at the secondary system. However, errors that occur at the primary system may be replicated at the secondary system.
There is a need in the art for improved techniques for mirroring application operations at a secondary system.